home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 May / Disc 2 / PCU0503CD2.iso / Crystal / 3rdparty / JavaVM / Plug-in / jplugin.exe / rt.jar / sun / rmi / server / RemoteProxy.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-16  |  4.2 KB  |  135 lines

  1. package sun.rmi.server;
  2.  
  3. import java.rmi.Remote;
  4. import java.rmi.RemoteException;
  5. import java.rmi.StubNotFoundException;
  6. import java.rmi.server.LogStream;
  7. import java.rmi.server.RemoteRef;
  8. import java.rmi.server.RemoteStub;
  9. import java.rmi.server.Skeleton;
  10. import java.rmi.server.SkeletonNotFoundException;
  11. import sun.rmi.transport.ObjectTable;
  12. import sun.rmi.transport.Target;
  13. import sun.rmi.transport.Utils;
  14.  
  15. public final class RemoteProxy extends RemoteStub {
  16.    static int logLevel = LogStream.parseLevel(Utils.getProperty("sun.rmi.server.logLevel"));
  17.    private static Class classRemote = null;
  18.  
  19.    private RemoteProxy() {
  20.    }
  21.  
  22.    public static RemoteStub getStub(Remote var0, RemoteRef var1) throws StubNotFoundException {
  23.       Object var2 = null;
  24.  
  25.       try {
  26.          Class var4 = getRemoteClass(var0);
  27.          return getStub(var4.getName(), var4, var1);
  28.       } catch (ClassNotFoundException var3) {
  29.          throw new StubNotFoundException("Object does not implement an interface that extends java.rmi.Remote: " + var0.getClass().getName());
  30.       }
  31.    }
  32.  
  33.    public static RemoteStub getStub(String var0, RemoteRef var1) throws StubNotFoundException {
  34.       return getStub(var0, (Class)null, var1);
  35.    }
  36.  
  37.    public static RemoteStub getStub(String var0, Class var1, RemoteRef var2) throws StubNotFoundException {
  38.       String var3 = var0 + "_Stub";
  39.       Object var4 = null;
  40.  
  41.       try {
  42.          Class var5 = loadClassFromClass(var3, var1);
  43.          var10 = (RemoteStub)var5.newInstance();
  44.       } catch (ClassNotFoundException var6) {
  45.          throw new StubNotFoundException("Class not found: " + var3, var6);
  46.       } catch (InstantiationException var7) {
  47.          throw new StubNotFoundException("Can't create stub: " + var3, var7);
  48.       } catch (IllegalAccessException var8) {
  49.          throw new StubNotFoundException("No public constructor: " + var3, var8);
  50.       } catch (ClassCastException var9) {
  51.          throw new StubNotFoundException("Stub not of correct class: " + var3, var9);
  52.       }
  53.  
  54.       RemoteStub.setRef(var10, var2);
  55.       return var10;
  56.    }
  57.  
  58.    public static RemoteStub getProxy(Remote var0) throws RemoteException {
  59.       RemoteStub var2;
  60.       if (var0 instanceof RemoteStub) {
  61.          var2 = (RemoteStub)var0;
  62.       } else {
  63.          Target var1;
  64.          if ((var1 = ObjectTable.getTarget(var0)) == null) {
  65.             throw new StubNotFoundException("Remote object not exported: " + var0.getClass().getName());
  66.          }
  67.  
  68.          var2 = var1.getStub();
  69.       }
  70.  
  71.       return var2;
  72.    }
  73.  
  74.    public static Skeleton getSkeleton(Remote var0) throws SkeletonNotFoundException {
  75.       Class var1;
  76.       try {
  77.          var1 = getRemoteClass(var0);
  78.       } catch (ClassNotFoundException var8) {
  79.          throw new SkeletonNotFoundException("Object does not implement an interface that extends java.rmi.Remote: " + var0.getClass().getName());
  80.       }
  81.  
  82.       String var2 = var1.getName() + "_Skel";
  83.  
  84.       try {
  85.          Class var3 = loadClassFromClass(var2, var1);
  86.          return (Skeleton)var3.newInstance();
  87.       } catch (ClassNotFoundException var4) {
  88.          throw new SkeletonNotFoundException("Skeleton class not found: " + var2, var4);
  89.       } catch (InstantiationException var5) {
  90.          throw new SkeletonNotFoundException("Can't create skeleton: " + var2, var5);
  91.       } catch (IllegalAccessException var6) {
  92.          throw new SkeletonNotFoundException("No public constructor: " + var2, var6);
  93.       } catch (ClassCastException var7) {
  94.          throw new SkeletonNotFoundException("Skeleton not of correct class: " + var2, var7);
  95.       }
  96.    }
  97.  
  98.    private static Class loadClassFromClass(String var0, Class var1) throws ClassNotFoundException {
  99.       ClassLoader var2 = null;
  100.       if (var1 != null) {
  101.          var2 = var1.getClassLoader();
  102.       }
  103.  
  104.       return var2 != null ? var2.loadClass(var0) : Class.forName(var0);
  105.    }
  106.  
  107.    private static Class getRemoteClass(Remote var0) throws ClassNotFoundException {
  108.       for(Class var1 = var0.getClass(); var1 != null; var1 = var1.getSuperclass()) {
  109.          if (extendsRemote(var1.getInterfaces())) {
  110.             return var1;
  111.          }
  112.       }
  113.  
  114.       throw new ClassNotFoundException("java.rmi.Remote");
  115.    }
  116.  
  117.    private static boolean extendsRemote(Class[] var0) throws ClassNotFoundException {
  118.       if (classRemote == null) {
  119.          classRemote = Class.forName("java.rmi.Remote");
  120.       }
  121.  
  122.       for(int var1 = var0.length - 1; var1 >= 0; --var1) {
  123.          if (var0[var1].equals(classRemote)) {
  124.             return true;
  125.          }
  126.  
  127.          if (extendsRemote(var0[var1].getInterfaces())) {
  128.             return true;
  129.          }
  130.       }
  131.  
  132.       return false;
  133.    }
  134. }
  135.